/**
 * 统一API响应模型 - 系统所有接口的统一响应格式定义
 *
 * 开发人员：邢珈晟
 * 开发时间：2025-10-20 至 2025-10-25
 * 模块职责：定义系统统一的API响应格式，支持泛型数据返回和错误信息封装
 *
 * 技术要点：
 * - 泛型响应数据支持灵活的数据类型
 * - 统一的状态码和消息格式设计
 * - 静态工厂方法提供便捷的响应构造
 * - Lombok注解简化代码编写
 * - 前后端约定的响应格式标准
 *
 * 开发故事：负责系统API响应的统一格式设计，与前端开发团队深度配合，确保前后端接口调用的一致性和易用性。
 */
package com.pbl.common.model;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
public class ApiResponse<T> {
    private int code; // 0 success, others error
    private String message;
    private T data;

    /**
     * 成功响应（带数据）
     */
    public static <T> ApiResponse<T> success(T data) {
        return new ApiResponse<>(0, "success", data);
    }

    /**
     * 成功响应（无数据）
     */
    public static <T> ApiResponse<T> success() {
        return new ApiResponse<>(0, "success", null);
    }

    /**
     * 错误响应
     */
    public static <T> ApiResponse<T> error(int code, String message) {
        return new ApiResponse<>(code, message, null);
    }
}
